package com.yangcangclub.message.service.impl;

import com.yangcangclub.message.base.MesgBaseService;
import com.yangcangclub.message.domain.SMS;
import com.yangcangclub.message.service.MessageService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;


@Service
public class MessageServiceImpl extends MesgBaseService implements MessageService {

    @Autowired
    SMS sMS;

    @Autowired
    RedisTemplate redisTemplate;

    /**
     * 发送短信
     * type  1 注册验证码 2 找回密码验证码
     */
    @Override
    public boolean sendSMS(String phone, int type,String picCode,String cardNum) {


//        if(!redisTemplate.hasKey("system.imgcode." + phone + ".value")) {
//            throw new ApolloException(MessageEnum.PIC_CODE_NOT_EXIST_ERROR);
//        }
//
//        String value = (String)redisTemplate.boundValueOps("system.imgcode." + phone + ".value").get();
//        if(!StringUtil.isEquals(value,picCode)) {
//            throw new ApolloException(MessageEnum.PIC_CODE_NOT_DUI_ERROR);
//        }

       return  sMS.sendValidCode(phone,type,cardNum);

    }

    /**
     *  校验验证码
     */
    @Override
    public boolean verifyCode(String phone, String code) {
        return sMS.verifyCode(phone, code);
    }

//
//    /**
//     * 获取用户消息列表
//     */
//    @Override
//    public Map<String, Object> getPullMessageList(int userId, int pageNum, int pageSize) {
//
//        Map<String,Object> map= Maps.newHashMap();
////        int total=(int)super.pullMessage.getMessgNum(userId, MesgEnum.TOTAL);
////        map.put("totalCount",total);
////        //总页数
////        int totalPage=total/pageSize;
////        if(totalPage*pageSize<total)totalPage+=1;
////        map.put("totalPage",totalPage);
////        map.put("nowPage",pageNum);
////        if(total==0){
////            map.put("list", Lists.newArrayList());
////            return map;
////        }
//        //分页查询数据
//        int start=(pageNum-1)*pageSize;
//        List<PullMsg> list=super.pullMessage.getMessgList(userId,start,pageSize);
//
//
//        if(null==list||list.size()==0) {
//            map.put("list", Lists.newArrayList());
//            return map;
//        }
//
//        List<Map<String, Object>> resultList = Lists.newArrayList();
//
//        for(PullMsg msg:list){
//            Map<String,Object> eleData= Maps.newHashMap();
//            eleData.put("id", msg.getId());
//            eleData.put("create_date", new DateTime(msg.getCreate_date()).toString("yyyy-MM-dd HH:mm"));
//            eleData.put("content", msg.getContent());
//            eleData.put("object_id", msg.getObject_id());
//            eleData.put("object_type", msg.getObject_type());
//            eleData.put("is_read", msg.getIs_read());
//
//            //获取用户资料信息
//            Map<String, Object>  user =super.userComponent.queryUserProfile(null, Integer.valueOf(msg.getSend_user_id()), null);
//            if(user!=null) {
//                eleData.put("image", user.get("photo"));
//                eleData.put("username", user.get("name"));
//            } else {
//                eleData.put("image","");
//                eleData.put("username", "");
//            }
//            resultList.add(eleData);
//        }
//
//        map.put("list",resultList);
//        return map;
//
//    }
//
//
//    /**
//     * 用户已读/未读/总消息数量
//     */
//
//    @Override
//    public Map<String, Integer> getPullMessageCount(int userId) {
//
//        Map<String, Integer>map=Maps.newHashMap();
//
//        int total=super.pullMessage.getMessgNum(userId,MesgEnum.TOTAL);
//
//        int read=super.pullMessage.getMessgNum(userId,MesgEnum.READ);
//        int unread=super.pullMessage.getMessgNum(userId,MesgEnum.UNREAD);
//
//        int uncheck=super.pullMessage.getMessgNum(userId, MesgEnum.UNCHECK);
//
//        int pri_unread=super.privateMsg.selectPrivMsgUnreadNum(userId);
//
////        int communityUnreadCount = super.communityComponent.getUserCommunityUserNewCount(userId);
//
//        map.put("total",total);
//        map.put("read",read);
//        map.put("unread",unread);
//        map.put("add",uncheck+pri_unread);
////        map.put("communityUnreadCount",communityUnreadCount);
//
//        return map;
//    }
//
//
//    /**
//     * 修改用户消息状态
//     */
//    @Override
//    public boolean modifyMesgStatus(int userId, int msgId,MesgEnum type) {
//
//        if(type!=MesgEnum.CHECK&&msgId==0){
//            throw new ApolloException(MessageEnum.PARMA_FORMAT_ERROR);
//        }else if(type==MesgEnum.CHECK&&msgId !=0){
//            throw new ApolloException(MessageEnum.PARMA_FORMAT_ERROR);
//        }
//
//        return super.pullMessage.modifyMsgStatus(userId,msgId,type);
//    }
//
//
//    /**
//     *新增用户反馈信息
//     */
//    @Override
//    public boolean addFeedBack(String uuid, String content, String contact) {
//
//
//        int userId=0;
//        if(uuid!=null){
//            if(uuid.length()!=32){
//                throw new ApolloException(MessageEnum.UUID_ERROR);
//            }else{
//                Map<String, Object> u=super.userComponent.queryUserProfile(null, 0, uuid);
//                if(u==null){
//                    throw new ApolloException(MessageEnum.USER_NOT_EXIST);
//                }else{
//                    userId=(int)u.get("id");
//                }
//            }
//        }
//
//        return super.feedBack.addFeedback(userId,content,contact);
//    }
//
//    /**
//     *查询所有用户反馈list
//     */
//    @Override
//    public Map<String, Object> getFeedbackList(String orderBy, int pageNum, int pageSize) {
//
//        Map<String, Object> map=Maps.newHashMap();
//        //获取总数量
//        int totalRecord=super.feedBack.getFeedbackCount();
//        //总页数
//        int totalPage=totalRecord/pageSize;
//         List<Map<String, Object>> list=super.feedBack.getList(pageNum,pageSize, orderBy);
//        Map<String, Object> u;
//        for(Map m:list){
//            // 处理空
//            if(StringUtil.isEmpty((String)m.get("contact"))){
//                m.put("contact","");
//            }
//            u=super.userComponent.queryUserProfile(null,(Integer)m.get("user_id"),null);
//            if(u!=null){
//                m.put("userNickName",u.get("nickName"));
//                m.put("userUUID",u.get("uuid"));
//                m.put("userId",u.get("id"));
//                m.remove("user_id");
//                m.put("create_date", new DateTime(m.get("create_date")).toString("yyyy-MM-dd HH:mm:ss"));
//            }
//
//        }
//        map.put("total",totalRecord);
//        map.put("rows",list);
//        return map;
//
//    }
//
//    /**
//     *添加用户消息
//     */
//    @Override
//    public boolean addPullMessage(int sendUserId,int userId, String msgType, int msgId, String message) {
//        return super.pullMessage.addPullMesg(sendUserId,userId,msgType,msgId,message);
//    }
//
//
//    /**
//     * 查看反馈回复list
//     */
//    @Override
//    public Map<String, Object> getFeedBackReply(int msg) {
//        Map<String, Object> map=Maps.newHashMap();
//        List<Map<String, Object>> list=super.pullMessage.getReplyList(msg);
//        if(list==null){
//            list=Lists.newArrayList();
//        } else{
//            for(Map m:list){
//                m.put("create_date", new DateTime(m.get("create_date")).toString("yyyy-MM-dd HH:mm:ss"));
//            }
//        }
//
//        map.put("total",list.size());
//        map.put("rows",list);
//        return map;
//    }
//
//    /**
//     *发送私信
//     */
//    @Override
//    public int sendPrivateMesg(User user, String followuuid, String content) {
//        Map<String,Object> umap=super.userComponent.queryUserProfile(null,0,followuuid);
//        if(umap==null){
//            throw new ApolloException(MessageEnum.USER_NOT_EXIST);
//        }
//        //建立对话
//        long shareMsgId= super.privateMsg.buildSession(user.getId(),(int)umap.get("id"));
//
//        super.privateMsg.addUnReadNum((int)umap.get("id"),user.getId());//注意参数顺序
//
//        //入库
//        int msgid=super.privateMsg.send(user.getId(),shareMsgId,content);
//        //推送
//        super.pushMessage.sendMessage((int)umap.get("id"),"立刻分享", user.getName()+"："+content, content, 3,"", 1,7,
//                user.getUuid(),user.getName(),user.getPhoto());
//
//        return  msgid;
//
//    }
//
//
//    /**
//     *私信对话列表
//     */
//    @Override
//    public Map<String,Object> getPrivMsgList(int userId, String followuuid, int maxMsgId) {
//        int pageSize=200;//每次返回的条数。
//
//        Map<String,Object> umap=super.userComponent.queryUserProfile(null,0,followuuid);
//        if(umap==null){
//            throw new ApolloException(MessageEnum.USER_NOT_EXIST);
//        }
//
//       long shareMsgId= super.privateMsg.buildSession(userId,(int)umap.get("id"));
//
//        List<PrivMsgBean> list= super.privateMsg.readList(shareMsgId,maxMsgId,pageSize);
//        if(list==null)return null;
//
//        //数据转换,剔除客户端不必要数据
//        List<Map<String,Object>> tempList=Lists.newArrayList();
//        Map<String,Object> map;
//        for(PrivMsgBean bean:list){
//            map= Maps.newHashMap();
//            map.put("id",bean.getId());
//            map.put("msgId",bean.getId());
//            map.put("content",bean.getContent());
//            map.put("create_date",new DateTime(bean.getCreate_date()).toString("yyyy-MM-dd HH:mm:ss"));
//            map.put("create_date_id",bean.getCreate_date().getTime());
//            map.put("send_user_uuid",super.userComponent.queryUserProfile(null,bean.getUser_id(),null).get("uuid"));
//            tempList.add(map);
//        }
//
//        //更新消息为已读
//       super.privateMsg.resetReadNum( shareMsgId, userId);
//
//
//        Map<String,Object> tempMap=Maps.newHashMap();
//        tempMap.put("is_max_msg",tempList.size()==pageSize);
//        tempMap.put("list",tempList);
//        return tempMap;
//    }
//
//
//    /**
//     * 私信好友列表
//     */
//    @Override
//    public List<Map<String, Object>> getPrivUserList(int userId, int pageNum,String isAll, int pageSize) {
//        //获取总数量
//        //int totalRecord=super.privateMsg.sessionSize(userId);
//        //总页数
//        //int totalPage=totalRecord/pageSize;
//        //if(totalPage*pageSize<totalRecord)totalPage+=1;
//        //分页查询数据
//        int start=(pageNum-1)*pageSize;
//        //数据转换,剔除客户端不必要数据
//        List<Map<String,Object>> tempList=super.privateMsg.getUserList(userId,start,pageSize,isAll);
//        if(tempList==null||tempList.size()==0)return null;
//
//
//        Map<String,Object> map;
//        Map<String,Object> tempMap;
//        int follow_user_id=0;//好友id
//        for(int i=0;i<tempList.size();i++){
//            map=tempList.get(i);
//
//            //根据消息id 查询内容
//            PrivMsgBean msg= super.privateMsg.queryPrivateMsg((int)map.get("mesgId"));
//            map.put("create_date",new DateTime(msg.getCreate_date()).toString("yyyy-MM-dd HH:mm:ss"));
//            map.put("create_date_millis", new DateTime(msg.getCreate_date()).getMillis());
//            map.put("content",msg.getContent());
//
//            tempMap=userComponent.queryUserProfile(null, msg.getUser_id(),null);
//            map.put("send_user_uuid", tempMap == null ? "" : tempMap.get("uuid"));
//            map.put("send_user_name",tempMap==null?"":tempMap.get("name"));
//
//            if((Integer)map.get("user_id")!=userId){
//                follow_user_id=(Integer)map.get("user_id");
//            }else{
//                follow_user_id=(Integer)map.get("follow_user_id");
//            }
//            tempMap=userComponent.queryUserProfile(null,follow_user_id,null);
//            map.put("follow_user_uuid", tempMap==null?"":tempMap.get("uuid"));
//            map.put("follow_user_photo", tempMap==null?"":tempMap.get("photo"));
//            map.put("follow_user_name",tempMap==null?"": tempMap.get("nickName"));
//            map.remove("follow_user_id");
//            map.remove("send_uid");
//            map.remove("user_id");
//
//            //设置未读消息数量
//            tempMap= super.privateMsg.queryMsgSessionInfo(userId,follow_user_id);
//            if(tempMap!=null){
//                map.put("msg_count", tempMap.get("msg_count"));
//            }else{
//                map.put("msg_count", 0);
//            }
//
//            //剔除没有新消息的人
//            if("N".equals(isAll)&&0==(int)map.get("msg_count")){
//                tempList.remove(i);
//                i-=1;
//            }
//
//        }
//
//
//        return tempList;
//    }
//


}
